_t_y_p_e Specifies the the data type of each coordinate in the array.
Symbolic constants GGGGLLLL____BBBBYYYYTTTTEEEE, GGGGLLLL____SSSSHHHHOOOORRRRTTTT, GGGGLLLL____IIIINNNNTTTT, GGGGLLLL____FFFFLLLLOOOOAAAATTTT, or
GGGGLLLL____DDDDOOOOUUUUBBBBLLLLEEEE____EEEEXXXXTTTT are accepted.
_s_t_r_i_d_e Specifies the byte offset between consecutive normals.
_c_o_u_n_t Specifies the number of normals, counting from the first, that
are static.
_p_o_i_n_t_e_r Specifies a pointer to the first coordinate of the first normal
in the array.
DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
ggggllllNNNNoooorrrrmmmmaaaallllPPPPooooiiiinnnntttteeeerrrrEEEEXXXXTTTT specifies the location and data format of an array of
normals to use when rendering using the vertex array extension. _t_y_p_e
specifies the data type of the normal coordinates and _s_t_r_i_d_e gives the
byte stride from one normal to the next allowing vertexes and attributes
to be packed into a single array or stored in separate arrays. (Single-
array storage may be more efficient on some implementations.) _c_o_u_n_t
indicates the number of array elements (counting from the first) that are
static. Static elements may be modified by the application, but once they
are modified, the application must explicitly respecify the array before
using it for any rendering. When a normal array is specified, _t_y_p_e,
_s_t_r_i_d_e, _c_o_u_n_t and _p_o_i_n_t_e_r are saved as client-side state, and static
array elements may be cached by the implementation.
The normal array is enabled and disabled using ggggllllEEEEnnnnaaaabbbblllleeee and ggggllllDDDDiiiissssaaaabbbblllleeee
with the argument GGGGLLLL____NNNNOOOORRRRMMMMAAAALLLL____AAAARRRRRRRRAAAAYYYY____EEEEXXXXTTTT. If enabled, the normal array is
used when ggggllllDDDDrrrraaaawwwwAAAArrrrrrrraaaayyyyssssEEEEXXXXTTTT or ggggllllAAAArrrrrrrraaaayyyyEEEElllleeeemmmmeeeennnnttttEEEEXXXXTTTT is called.
Use ggggllllDDDDrrrraaaawwwwAAAArrrrrrrraaaayyyyssssEEEEXXXXTTTT to define a sequence of primitives (all of the same
type) from pre-specified vertex and vertex attribute arrays. Use
ggggllllAAAArrrrrrrraaaayyyyEEEElllleeeemmmmeeeennnnttttEEEEXXXXTTTT to specify primitives by indexing vertexes and vertex
attributes.
NNNNOOOOTTTTEEEESSSS
Non-static array elements are not accessed until ggggllllAAAArrrrrrrraaaayyyyEEEElllleeeemmmmeeeennnnttttEEEEXXXXTTTT or
ggggllllDDDDrrrraaaawwwwAAAArrrrrrrraaaayyyyssssEEEEXXXXTTTT is executed.
By default the normal array is disabled and it won't be accessed when
ggggllllAAAArrrrrrrraaaayyyyEEEElllleeeemmmmeeeennnnttttEEEEXXXXTTTT or ggggllllDDDDrrrraaaawwwwAAAArrrrrrrraaaayyyyssssEEEEXXXXTTTT is called.
Although it is not an error to call ggggllllNNNNoooorrrrmmmmaaaallllPPPPooooiiiinnnntttteeeerrrrEEEEXXXXTTTT between the
execution of ggggllllBBBBeeeeggggiiiinnnn and the corresponding execution of ggggllllEEEEnnnndddd, the
results are undefined.
ggggllllNNNNoooorrrrmmmmaaaallllPPPPooooiiiinnnntttteeeerrrrEEEEXXXXTTTT will typically be implemented on the client side with
no protocol.
Since the normal array parameters are client side state, they are not
saved or restored by ggggllllPPPPuuuusssshhhhAAAAttttttttrrrriiiibbbb and ggggllllPPPPooooppppAAAAttttttttrrrriiiibbbb.
ggggllllNNNNoooorrrrmmmmaaaallllPPPPooooiiiinnnntttteeeerrrrEEEEXXXXTTTT commands are not entered into display lists.
ggggllllNNNNoooorrrrmmmmaaaallllPPPPooooiiiinnnntttteeeerrrrEEEEXXXXTTTT is part of the EEEEXXXXTTTT____vvvveeeerrrrtttteeeexxxx____aaaarrrrrrrraaaayyyy extension, not part of
the core GL command set. If GGGGLLLL____EEEEXXXXTTTT____vvvveeeerrrrtttteeeexxxx____aaaarrrrrrrraaaayyyy is included in the string
returned by ggggllllGGGGeeeettttSSSSttttrrrriiiinnnngggg, when called with argument GGGGLLLL____EEEEXXXXTTTTEEEENNNNSSSSIIIIOOOONNNNSSSS,
extension EEEEXXXXTTTT____vvvveeeerrrrtttteeeexxxx____aaaarrrrrrrraaaayyyy is supported.
EEEERRRRRRRROOOORRRRSSSS
GGGGLLLL____IIIINNNNVVVVAAAALLLLIIIIDDDD____EEEENNNNUUUUMMMM is generated if _t_y_p_e is not an accepted value.
GGGGLLLL____IIIINNNNVVVVAAAALLLLIIIIDDDD____VVVVAAAALLLLUUUUEEEE is generated if _s_t_r_i_d_e or _c_o_u_n_t is negative.
ggggllllIIIIssssEEEEnnnnaaaabbbblllleeeedddd with argument GGGGLLLL____NNNNOOOORRRRMMMMAAAALLLL____AAAARRRRRRRRAAAAYYYY____EEEEXXXXTTTT
ggggllllGGGGeeeetttt with argument GGGGLLLL____NNNNOOOORRRRMMMMAAAALLLL____AAAARRRRRRRRAAAAYYYY____TTTTYYYYPPPPEEEE____EEEEXXXXTTTT
ggggllllGGGGeeeetttt with argument GGGGLLLL____NNNNOOOORRRRMMMMAAAALLLL____AAAARRRRRRRRAAAAYYYY____SSSSTTTTRRRRIIIIDDDDEEEE____EEEEXXXXTTTT
ggggllllGGGGeeeetttt with argument GGGGLLLL____NNNNOOOORRRRMMMMAAAALLLL____AAAARRRRRRRRAAAAYYYY____CCCCOOOOUUUUNNNNTTTT____EEEEXXXXTTTT
ggggllllGGGGeeeettttPPPPooooiiiinnnntttteeeerrrrvvvvEEEEXXXXTTTT with argument GGGGLLLL____NNNNOOOORRRRMMMMAAAALLLL____AAAARRRRRRRRAAAAYYYY____PPPPOOOOIIIINNNNTTTTEEEERRRR____EEEEXXXXTTTT
GGGGLLLL____IIIINNNNDDDDEEEEXXXX____AAAARRRRRRRRAAAAYYYY____EEEEXXXXTTTT, GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____CCCCOOOOOOOORRRRDDDD____AAAARRRRRRRRAAAAYYYY____EEEEXXXXTTTT, or GGGGLLLL____EEEEDDDDGGGGEEEE____FFFFLLLLAAAAGGGG____AAAARRRRRRRRAAAAYYYY____EEEEXXXXTTTT
between a call to ggggllllNNNNeeeewwwwLLLLiiiisssstttt and the corresponding call to ggggllllEEEEnnnnddddLLLLiiiisssstttt.
Instead, enable or disable before the call to ggggllllNNNNeeeewwwwLLLLiiiisssstttt.